import Vue from "vue";
import App from "./App";

Vue.config.productionTip = false;
/*
  需求：实现任意组件通信
  解决：
    如果所有组件都可以绑定事件触发事件，那么就可以通信了
    - 绑定事件、触发事件必须是同一个，是哪个？
      - 必须可以绑定事件&触发事件
        - 组件实例对象  this
        - Vue的实例对象 vm
    - 所有组件实例怎么找到对象？
      - 通过原型属性
      - 定义：
        - VueComponent.prototype
          - VueComponent操作不了
        - Vue.prototype
          - 在这里定义

    this.__proto__ === VueComponent.prototype
    VueComponent.prototype.__proto__ === Vue.prototype
    vm.__proto__ === Vue.prototype

   $globalEventBus 全局事件总线对象
    1. Vue.prototype.$globalEventBus = new Vue();
    2. beforeCreate() {
        Vue.prototype.$globalEventBus = this;
       },
*/
// 不行，没有变量提升，即使有提升也是一个undefined，没有意义
// Vue.prototype.$globalEventBus = vm;

Vue.prototype.$globalEventBus = new Vue();

const vm = new Vue({
  // beforeCreate() {
  // console.log(vm);
  // vm没值，vm是undefined
  // Vue.prototype.$globalEventBus = this;
  // },
  el: "#app",
  render: h => h(App)
});

// 不行，是先渲染组件，在添加的方法
// 渲染时不能使用$globalEventBus
// Vue.prototype.$globalEventBus = vm;

// console.log("Vue.prototype", Vue.prototype);
console.log("vm", vm);
